import * as mongoose from 'mongoose'
const Schema = mongoose.Schema;

//定义BannerSchem,类似定义表的结构，下面的BannerSchema包含了如下字段
const CategorySchema = new Schema({
    name: {
        type:String, //数据类型
        require:true, //必填
        trim:true,  //保存的时候，如果左右有空格会进行删除空格
    },

    imageUrl: {
        type:String, //数据类型
    },

    /**
     * parent = {name,imageUrl,parent,sortOrder,isActive}
     * 当存在字段的接口引用自身的Schema时，通过下面的方式type,ref 字段来定义
     */
    parent:{
        type:Schema.Types.ObjectId,
        ref:"Category"  //表示Parent中包含的字段个数和类型还是一个CategorySchema的结构
    },

    sortOrder: {
        type:String, //数据类型
        require:true, //必填
        trim:true,  //保存的时候，如果左右有空格会进行删除空格
    },
    isActive: {
        type:Boolean, //数据类型
    },








},{
    timestamps:true,  //保存文档时，自动创建createAt 和updateAt两个字段，启用时间戳，类似mysql中的createTime和updateTime
    toJSON:{
        virtuals:true , //启用虚拟属性

        //定义转换函数，用于修改文档的json表现形式
        transform(doc,ret){
            ret.id=ret._id.toHexString();

            //删除原来的_id,_v字段
            delete ret._id;
            delete ret.__v;

        }
    }
})

export default CategorySchema;